/**
 * @author 0283000115
 * @date 2017年9月26日-上午9:42:43
 */
package com.zte.claa.inficombo.csa.app.service.rptparse.ext.gnss;

import com.zte.claa.inficombo.csa.app.service.rptparse.ext.gnss.mina.msgbean.GnssRequest;

/**
 * @author 0283000115
 *
 */
public interface GnssCommService {
	// CONNECT状态。
	public static final int CONN_STATUS_IDLE  = 1;
	public static final int CONN_STATUS_CLOSE = 2;
	
	/**
	 * 建立到gnss的连接 （tcp长链）
	 * 
	 * @throws Exception
	 */
	public void connectToGnss() throws Exception;
	
	/**
	 * 关闭到gnss的连接
	 * 
	 * 异常或系统退出时调用。
	 */
	public void closeConnectToGnss();
	
	/**
	 * 判断是否已经连接到GNSS： true--已经连接；false--未连接；
	 * @return
	 */
	public boolean hasConnectToGnss();
	
	/**
	 * 同步方式执行命令.
	 * 
	 * @param req
	 * @return 命令响应的string
	 * @throws Exception
	 */
	public GnssParseResult execCommand(GnssRequest req) throws Exception;
	
	/**
	 * 执行命令不关注响应.
	 * 
	 * @param jsonCmd
	 * @return 命令响应的string（json）
	 * @throws Exception
	 */
	public void execCommandIngoreRsp(GnssRequest req) throws Exception;
	
	/**
	 * 上报消息
	 * 
	 * @param Ascii string
	 */
	public void reportMessage(String msg);
	
	/**
	 * 上报异常
	 * 
	 * @param jsonMsg
	 */
	public void reportException(Throwable cause);
	
	/**
	 * 上报消息
	 * 
	 * @param jsonMsg
	 */
	public void reportConnectStatus(int status);
	
}
